#include "hycz.h"
#include "ui_hycz.h"
#include "dlcw.h"
#include "value.h"
#include <QDateTime>
#include <QMessageBox>

extern std::string _name;

hycz::hycz(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::hycz)
{
    ui->setupUi(this);
    setWindowTitle("会员充值");
    ui->username->setText(QString::fromStdString(_name));
}

hycz::~hycz()
{
    delete ui;
}

void hycz::on_okbtn_clicked()
{
    _name=ui->username->text().trimmed().toStdString();
    if(_name=="admin123"){
        QMessageBox::warning(this,"自己给自己充钱？","管理员无法被充值！！！");
        return;
    }
    FILE* fp;
    Accp ppp;
    int flg=0;
    fp = fopen("account", "ab+");    //以追加的方式打开文件

    while (!feof(fp))         // feof函数可以检查文件读写位置标志是否移动到文件末尾，feof(fp)检查fp所指向的文件是否结束，如果是
    {
        ppp=(Accp)malloc(N);//则函数值为真，否则为假，即“!feof(fp)”为真，在while循环中检查 “!feof(fp)”为真，就执行循环体
        fread(ppp, N, 1, fp);
        if(strcmp(_name.c_str(),ppp->name)==0){
            flg=1;
            break;
        }
        free(ppp);
    }
    fclose(fp);//关闭文件
    if(flg==0){
        QMessageBox::warning(this,"err","用户名不存在");
        return;
    }
    qreal cnt;
    cnt=ui->incount->value();
    if(cnt<=100) {
        QMessageBox::warning(this,"充值金额过少","充值金额必须在100元以上");
        return;
    }
    IAEP p,adp;
    p = (IAEP)malloc(M);        //申请一段大小为M 的空间
    adp = (IAEP)malloc(M);
    p->iae=cnt;//金额
    adp->iae=cnt;
    p->ch='+';
    adp->ch='+';
    QDateTime ti=QDateTime::currentDateTime();//当前时间
    p->year=ti.toString("yy").toInt();
    p->month=ti.toString("MM").toInt();
    p->day=ti.toString("dd").toInt();
    adp->year=ti.toString("yy").toInt();
    adp->month=ti.toString("MM").toInt();
    adp->day=ti.toString("dd").toInt();
    //printf("请输入收入来源或支出目的：");
    //gets(p->source_or_aim);
    std::string reason="会员充值";
    strcpy(p->source_or_aim,reason.c_str());
    strcpy(adp->source_or_aim,_name.c_str());
    //保存p到文件中
          //文件指针
    fp = fopen(_name.c_str(), "ab");    //以追加的方式打开文件
    if (fp == NULL)
    {
        //printf("cannot open file\n");
        QMessageBox::warning(this,"err","打开文件失败！");
        fclose(fp);//关闭文件
    }
    else if (fwrite(p, M, 1, fp) != 1)    //将p所指向的1个大小为M的数据结构写入fp所指向的文件中
    {
        //printf("file write error\n");
        QMessageBox::warning(this,"err","文件写入失败！");
        fclose(fp);//关闭文件
    }
    else {
        fclose(fp);//关闭文件
        accept();
    }
}
